//
//  AppDelegate.swift
//  Weibo
//
//  Created by 5201-mac on 2017/4/14.
//  Copyright © 2017年 wlb-mac. All rights reserved.
//

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        
        //手动实例化window
        window = UIWindow(frame: UIScreen.main.bounds)
        window?.backgroundColor = UIColor.white
        
        //设置根视图控制器,应该TabbarController为根视图控制器
//        let mainTabbarVC = MainViewController()
//        //window?.rootViewController = mainTabbarVC
//        window?.rootViewController = NewFeatureViewController()
        window?.rootViewController = defaultRootViewController()
        
        //成为主window并且可视化
        window?.makeKeyAndVisible()
        return true
    }
    
    //根据是否是新版本来决定显示哪一个控制器
    func defaultRootViewController() -> UIViewController {
        if newVersion() {
            return NewFeatureViewController()
        }
        return MainViewController()
    }
    
    //是否是新版本
    func newVersion() -> Bool {
        let userSetting = UserDefaults.standard
        let appVersion = "AppVersion"
        //1.获取上一次存储在本地的版本,根据一个key
        let lastVersion = userSetting.double(forKey: appVersion)
        print(lastVersion)
        //2.获取当前应用程序的版本
        let dict = Bundle.main.infoDictionary!
        let currentVersionStr = dict["CFBundleShortVersionString"] as! String
        let currentNum = Double(currentVersionStr) ?? 0
        print(currentNum)
        //2.1将当前版本保存在本地
        userSetting.set(currentNum,forKey: appVersion)
        userSetting.synchronize()
        //3.比较两个版本
        return currentNum > lastVersion
    }

    func applicationWillResignActive(_ application: UIApplication) {
        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
        // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
    }

    func applicationDidEnterBackground(_ application: UIApplication) {
        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
    }

    func applicationWillEnterForeground(_ application: UIApplication) {
        // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
    }

    func applicationDidBecomeActive(_ application: UIApplication) {
        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    }

    func applicationWillTerminate(_ application: UIApplication) {
        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    }


    func userSetting() {
        //比较上一次版本和当前应用程序的版本
        //用户偏好设置，存储数据到本地，和字典的用法类似
        let userSetting = UserDefaults.standard
        userSetting.set("nextstep", forKey: "name")
        //同步的操作
        userSetting.synchronize()
        //所以的偏好设置的数据都是存储在沙盒中
        print(NSHomeDirectory())
        let name = userSetting.value(forKey: "name")
        //print(name)
    }
}

